//
//  extension.swift
//  swift_ example
//
//  Created by 魏熙美 on 2020/2/22.
//  Copyright © 2020 魏熙美. All rights reserved.
//

import Foundation

// 扩展
// 扩展为现有的类、结构体、枚举类型、或协议添加了新功能(任何函数，属性，构造器，继承等等都可以)。
/**
 Swift 中的扩展可以：

 添加计算实例属性和计算类型属性；
 定义实例方法和类型方法；
 提供新初始化器；
 定义下标；
 定义和使用新内嵌类型；
 使现有的类型遵循某协议
 */

// 例子
// 为Swift内置的Double类型扩展一些功能
extension Double {
    // 扩展的一些属性
    var km: Double { return self * 1_000.0 }
    var m: Double { return self }
    var cm: Double { return self / 100.0 }
    var mm: Double { return self / 1_000.0 }
    var ft: Double { return self / 3.28084 }
}

func runs() {
    let oneInch = 25.4.mm
    print("One inch is \(oneInch) meters")
    // Prints "One inch is 0.0254 meters"
    let threeFeet = 3.ft
    print("Three feet is \(threeFeet) meters")
    // Prints "Three feet is 0.914399970739201 meters"
}


